package com.hy.Three394;

/**
 * Created With IntelliJ IDEA.
 * Descriptions:统计特殊字母的数量 I
 * 给你一个字符串 word。如果 word 中同时存在某个字母的小写形式和大写形式，则称这个字母为 特殊字母 。
 *
 * 示例 1:
 * 输入：word = "aaAbcBC"
 * 输出：3
 * 解释：
 * word 中的特殊字母是 'a'、'b' 和 'c'。
 *
 * 返回 word 中 特殊字母 的数量。
 * User:Mr.Du
 * Date:2024/4/21
 * Time:13:00
 */
public class NumberOfSpecialChars {

    /**
     * @param word 给定的字符串
     * @return 字符串中同时包含大写和小写的字母数量
     */
    public int numberOfSpecialChars(String word) {
        // 初始化两个数组，分别用于统计大写和小写字母出现的次数
        int[] nums1 = new int[26];
        int[] nums2 = new int[26];
        int n = word.length(), cnt = 0; // n为字符串长度，cnt为同时包含大写和小写的字母数量

        // 遍历字符串，统计大写和小写字母出现的次数
        for(int i = 0;i < n;i++){
            char c = word.charAt(i);
            if(Character.isUpperCase(c)){
                nums1[c - 'A']++; // 统计大写字母
            }else{
                nums2[c - 'a']++; // 统计小写字母
            }
        }

        // 遍历统计数组，若大写和小写字母均出现过，则cnt加一
        for(int i = 0;i < 26;i++){
            if(nums1[i] > 0 && nums2[i] > 0){
                cnt++;
            }
        }
        return cnt;
    }

}
